2 CALL CLEAR :: B$="BONUS  " :: C$="SCORE    " :: D$="THE SAGA CONTINUES" :: T$="HI SCORE "
3 DIM OR$(12),LV(3,3) :: QK$="ALZQP2" :: AB=91
5 RESTORE 197 :: FOR F=1 TO 4 :: READ Q$,Q :: NEXT F :: CALL CHAR(136,Q$)
6 FOR F=1 TO 5 :: HF$(F)="MDW 999" :: NEXT F :: CALL COLOR(0,2,2)
7 RESTORE 179 :: FOR F=1 TO 18 :: READ Q,Q$ :: CALL CHAR(Q,Q$) :: NEXT F
8 GOSUB 156 :: LF=23 :: SC=0 :: 
9 KT,KL=0 :: T,KTS,V=1 :: XI=57 :: Y2=128
10 J(1)=12 :: J(0)=10
11 CALL MAGNIFY(3) :: CALL DELSPRITE(ALL) :: CALL COLOR(2,3,2)
12 GH=J(INT((1-0+1)*RND)+0)
13 LV(1,1)=121 :: LV(2,1),LV(3,2)=73 :: LV(3,1)=25 :: LV(1,2),LV(2,2)=121 :: LV(1,3),LV(2,3)=1 :: LV(3,3)=2
14 RESTORE 193 :: FOR F=1 TO 12 :: READ OR$(F) :: NEXT F :: RESTORE 194 :: FOR F=1 TO 4 :: READ KE(F) :: NEXT F
15 RANDOMIZE :: CM=INT((3-1+1)*RND)+1
16 CALL DELSPRITE(ALL) :: CALL CLEAR :: CALL SCREEN(3) :: CALL VCHAR(1,1,47,72) :: CALL VCHAR(1,30,47,72) :: CALL HCHAR(20,1,47,32)
17 CALL MAGNIFY(3)
18 CALL COLOR(12,11,2,1,14,2)
19 XI=25 :: FOR F=21 TO LF-1 :: CALL SPRITE(#F,124,12,170,XI) :: XI=XI+16 :: NEXT F
20 DISPLAY AT(21,10)SIZE(18):C$;SC :: DISPLAY AT(23,10)SIZE(18):T$&SEG$(HF$(1),4,7)
21 ON T GOSUB 120,123,126,129,132,135,138,141,144,147,150,153
22 U=33 :: FOR F=6 TO 18 STEP 6 :: CALL HCHAR(F,4,U,26) :: FOR G=F-3 TO F-1 :: CALL HCHAR(G,4,46,26) :: NEXT G :: U=U+1 :: NEXT F
23 READ E :: FOR F=1 TO E :: READ U,X,Y,RP :: IF U<>1 THEN 25
24 FOR G=X-3 TO X :: CALL HCHAR(G,Y,32,RP) :: NEXT G
25 IF U<>2 THEN 27
26 CALL VCHAR(X,Y,37,RP) :: IF X=1 THEN 27 :: CALL VCHAR(X-2,Y,46,2)
27 NEXT F
28 CALL SPRITE(#1,124,12,LV(V,1),Y2)
29 READ L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,EX$
30 XS=3 :: FOR F=1 TO 3 :: IF SEG$(OR$(T),F,1)="*" THEN 32 ELSE READ XA,YA,LL$(F) :: CALL SPRITE(#XS,60,ASC(SEG$(OR$(T),F,1))-60,XA,YA)
31 XS=XS+1
32 NEXT F
33 IF KT<>2 THEN 34 ELSE CALL SPRITE(#5,140,3,168,208) :: GOTO 35
34 READ X6,Y6 :: IF T<>CM THEN 35 :: CALL SPRITE(#5,140,3,X6,Y6)
35 IF T<>12 THEN 36 ELSE IF GH<>12 THEN 36 :: YU=5 :: XU=13 :: XD=121 :: GOTO 38
36 IF T<>10 THEN G1=1 :: GOTO 44 ELSE IF GH<>10 THEN G1=1 :: GOTO 44
37 YU=23 :: XU=7 :: XD=72
38 CALL CHAR(40,RPT$("80",8)) :: CALL CHAR(132,"03050B1A0301031E1316170F06283000C060D0D8C081C2FCC0E0F0E0C02818")
39 CALL CHAR(128,"03060B132381433F030707070E04041CC0A0D048C480C078C868E8F0C040406")
40 IF KTS>=8 THEN 42
41 FOR F=XU TO XU+4 :: CALL HCHAR(F,YU,40,6) :: NEXT F
42 CALL SPRITE(#10,131,10,XD,(YU+1)*8) :: SD=128 :: G1=0
43 G1=0
44 IF KTS>3 THEN OP=INT((4-1+1)*RND)+1 ELSE OP=KTS
45 RESTORE 197 :: FOR F=1 TO OP :: READ Q$,VU :: NEXT F :: CALL CHAR(136,Q$)
46 CO=INT((14-3+1)*RND)+3 :: IF VU<>10 THEN 48
47 XT=LV(2*RND+1,1) :: YT=200*RND+20 :: CALL SPRITE(#6,136,CO,XT,YT) :: GOTO 49
48 FOR F=1 TO 3 :: CALL SPRITE(#5+F,136,INT((14-3+1)*RND)+3,LV(F,1),80,0,INT(((8--8+1)*RND)+-8)+1) :: NEXT F
49 FOR F=1 TO 12 STEP 4
50 CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 101
51 IF G1=1 THEN 52 :: SD=SD+4 :: CALL PATTERN(#10,SD) :: IF SD=132 THEN SD=124
52 CALL KEY(0,X1,L) :: IF L=0 THEN CALL MOTION(#1,0,0) :: IR=0 :: GOTO 50
53 ON POS(QK$,CHR$(X1),1)+1 GOTO 54,56,76,64,84,87,90
54 CALL MOTION(#1,0,0) :: CALL PATTERN(#1,124) :: IR=0
55 NEXT F :: GOTO 49
56 CALL PATTERN(#1,AB+2) :: FOR S=8000 TO 10000 STEP 1000 :: CALL SOUND(-160,S,4,S/2,5) :: CALL POSITION(#1,X2,Y2) :: CALL MOTION(#1,-8,IR)
57 IF Y2<25 OR Y2>220 AND IR<>0 THEN IR=0 ELSE CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 101 ELSE CALL COINC(#1,#5,9,U) :: IF U=-1 THEN GOSUB 117
58 NEXT S
59 SS=S :: CALL PATTERN(#1,AB+6) :: CALL MOTION(#1,5,IR) :: FOR S=10000 TO 8000 STEP-1000
60 CALL SOUND(-260,S,4,S/2,5) :: CALL POSITION(#1,X2,Y2) :: IF Y2<30 OR Y2>225 THEN CALL MOTION(#1,5,0)
61 CALL COINC(#1,#5,3,U) :: IF U=-1 THEN GOSUB 117 ELSE CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 101
62 NEXT S :: CALL MOTION(#1,0,0) :: CALL POSITION(#1,X2,Y2) :: CALL LOCATE(#1,LV(V,1),Y2) :: CALL GCHAR(LV(V,1)/7,Y2/7.3,U)
63 IF U=32 THEN 94 ELSE IR=0 :: GOTO 54
64 CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 104
65 SO=0 :: CALL COINC(#1,L1,L2,2,U) :: IF U=-1 THEN EX=L3 :: CA=L5 :: LE=L4 :: GOTO 68
66 CALL COINC(#1,L6,L7,2,U) :: IF U=-1 THEN EX=L8 :: LE=L9 :: CA=L10 :: GOTO 68
67 GOTO 54
68 CALL POSITION(#1,X2,Y2) :: FOR G=116 TO 120 STEP 4 :: CALL PATTERN(#1,G) :: CALL MOTION(#1,-6,0) :: SC=SC+20
69 DISPLAY AT(21,10)SIZE(18):C$;SC
70 CALL KEY(0,X1,L) :: IF L=0 THEN CALL MOTION(#1,0,0) :: GOTO 70
71 CALL COINC(#1,EX,Y2,5,U) :: IF U=-1 THEN 74
72 CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 101
73 NEXT G :: GOTO 68
74 CALL MOTION(#1,0,0) :: CALL LOCATE(#1,LV(LE,1),Y2) :: V=LE :: IF T<>CA THEN T=CA :: GOTO 16
75 GOTO 54
76 FOR S=3 TO 6 :: CALL COINC(#1,#S,2,U) :: IF U=-1 THEN 78
77 NEXT S :: GOTO 54
78 SS$=SEG$(OR$(T),V,1) :: IF SS$="C" THEN 54
79 IF SS$<>"?" AND KT<>2 THEN 54 ELSE TT=T :: VV=V :: T=ASC(SEG$(LL$(V),1,1))-95 :: V=ASC(SEG$(LL$(V),2,1))-95
80 BO=INT((5-1+1)*RND)+1*100 :: SC=SC+BO :: IF SS$="?" THEN 16
81 FOR P=1 TO 3 :: KY$(P)=SEG$(OR$(TT),P,1) :: NEXT P
82 KY$(VV)="?" :: OR$(TT)="" :: FOR P=1 TO 3 :: OR$(TT)=OR$(TT)&KY$(P) :: NEXT P :: KT=0 :: IF KTS>=5 THEN 83 :: RANDOMIZE :: CM=INT((KE(KTS)-1+1)*RND)+1 :: GOTO 16
83 RANDOMIZE :: CM=INT((12-1+1)*RND)-1 :: KT=0 :: GOTO 16
84 CALL POSITION(#1,X2,Y2) :: IF Y2<30 THEN 99 ELSE CALL GCHAR(LV(V,1)/6.8,Y2/7.2,U) :: IF U=32 THEN 94 :: IR=-6 :: AB=91 :: CALL PATTERN(#1,AB+F)
85 CALL COINC(#1,#6,13,U) :: IF U=-1 THEN 101
86 CALL MOTION(#1,0,-6) :: GOTO 55
87 CALL POSITION(#1,X2,Y2) :: IF Y2>220 THEN 100 :: CALL GCHAR(LV(V,1)/6.8,Y2/7.2,U) :: IF U=32 THEN 94 :: IR=6 :: AB=104 :: CALL PATTERN(#1,AB+F)
88 CALL COINC(#1,#6,13,U) :: IF U=-1 THEN 101
89 CALL MOTION(#1,0,6) :: GOTO 55
90 IF KTS<8 THEN 54 :: CALL DISTANCE(#1,#10,DI) :: IF SQR(DI)>20 THEN 54 :: CALL DELSPRITE(ALL)
91 CALL CLEAR :: CALL SCREEN(2) :: CALL MAGNIFY(4) :: CALL SPRITE(#1,128,12,96,96,#10,124,14,96,128)
92 DISPLAY AT(20,7):"LIONEL MY HERO" :: DISPLAY AT(22,7):"YOU RESCUED ME" :: FOR F=1 TO 400 :: NEXT F :: CALL CLEAR
93 DISPLAY AT(20,6):D$ :: FOR F=1 TO 300 :: NEXT F :: IF LF>=24 THEN 9 ELSE LF=LF+1 :: GOTO 9
94 CALL POSITION(#1,X2,Y2) :: CALL MOTION(#1,6,0) :: FOR S=900 TO 110 STEP-20 :: CALL SOUND(-160,S,8) :: CALL COINC(#1,LV(V,2),Y2,3,U)
95 IF U<>-1 THEN 98
96 CALL MOTION(#1,0,0) :: CALL LOCATE(#1,LV(V,2),Y2) :: IF V<>1 THEN V=V-1
97 CALL GCHAR(LV(V,1)/6.8,Y2/7.4,U) :: IF U<>32 OR U=37 THEN 116 :: CALL MOTION(#1,6,0)
98 NEXT S
99 T=ASC(SEG$(EX$,1,1))-95 :: CALL DELSPRITE(ALL) :: Y2=225 :: GOTO 16
100 T=ASC(SEG$(EX$,2,2))-95 :: CALL DELSPRITE(ALL) :: Y2=24 :: GOTO 16
101 CALL MOTION(#1,0,0) :: IF VU=0 THEN 104 ELSE CALL DELSPRITE(#6) :: CALL DELSPRITE(#5+V) :: BO=(INT((5-1+1)*RND)+1)*100
102 GOSUB 118
103 CALL POSITION(#1,X1,Y1) :: CALL GCHAR(X1/7,Y1/7.4,U) :: IF U=32 THEN 94 ELSE 54
104 IF LF=21 THEN 107 ELSE CALL DELSPRITE(ALL) :: LF=LF-1 :: KL=KL+16 :: XI=9+KL :: Y2=128
105 CALL CLEAR :: CALL SCREEN(2) :: DISPLAY AT(10,6):D$
106 V=1 :: GOSUB 201 :: GOTO 16
107 DISPLAY AT(10,9)SIZE(16):"THE SAGA ENDS" :: GOSUB 201
108 CALL DELSPRITE(ALL) :: CALL CLEAR :: FOR F=5 TO 1 STEP-1 :: IF VAL(SEG$(HF$(F),4,7))>SC THEN 110
109 NEXT F
110 IF F=5 THEN 8 ELSE EG=F+1 :: GOSUB 114 :: GOSUB 170 :: DISPLAY AT((EG+3)*2,11):"   ";SC :: ACCEPT AT((EG+3)*2,11)SIZE(3)BEEP:N$
111 S$=N$&" "&STR$(SC) :: FOR F=EG TO 5 :: S2$=S$ :: S$=HF$(F) :: HF$(F)=S2$ :: NEXT F :: GOSUB 170 :: FOR F=1 TO 1000 :: CALL KEY(0,X1,L)
112 IF L<>0 THEN 8
113 NEXT F :: GOTO 2
114 CALL CHAR(40,"0101010101050C1F0F00010101050D0DB0B0A080808000F0F830A08080808080") :: CALL MAGNIFY(4)
115 CALL SPRITE(#1,40,12,30,25,0,0,#2,40,12,30,205,0,0,#3,40,12,145,25,0,0,#4,40,12,145,205) :: RETURN
116 IF S<=300 THEN 104 ELSE 54
117 CALL MOTION(#1,0,0) :: KT=2 :: KTS=KTS+1 :: CALL LOCATE(#5,169,215) :: BO=T*(V*10)*10
118 DISPLAY AT(1,11)SIZE(15)BEEP:B$;BO :: SC=SC+BO :: DISPLAY AT(21,10)SIZE(18):C$;SC :: FOR P=1 TO 200 :: NEXT P
119 DISPLAY AT(1,11)SIZE(15):RPT$(" ",11) :: RETURN
120 DATA 6,1,6,4,7,1,12,11,3,1,12,17,3,1,12,23,3,2,12,11,6,2,18,22,2,121,78,80,2,1,1,1,1,0,0
121 DATA ab,25,200,cb,3,76
122 RESTORE 120 :: RETURN
123 RESTORE 124 :: RETURN
124 DATA 5,1,6,10,3,1,6,14,15,1,12,11,3,1,12,16,3,2,6,10,6,73,68,32,3,2,1,1,1,0,0
125 DATA b`,25,55,ga,3,92
126 RESTORE 127 :: RETURN
127 DATA 6,1,6,16,4,1,12,9,3,1,12,15,3,1,12,24,3,1,12,19,3,2,6,16,12,121,116,32,3,3,1,1,1,0,0
128 DATA `a,25,200,hb,50,208
129 RESTORE 130 :: RETURN
130 DATA 6,1,6,10,2,1,6,14,3,1,6,19,2,1,12,10,12,2,1,22,5,2,12,10,6,25,164,3,1,1,121,68,80,2,4
131 DATA de,25,200,x,50,160
132 RESTORE 133 :: RETURN
133 DATA 4,1,6,7,20,1,12,4,20,2,6,7,12,2,18,22,2,121,44,32,3,5,1,1,1,0,0
134 DATA ec,73,200,jb,3,200
135 RESTORE 136 :: RETURN
136 DATA 3,1,6,9,2,1,12,20,3,2,6,12,6,73,84,32,3,6,1,1,1,0,0
137 DATA cd,121,55,x,25,40,e`,53,56
138 RESTORE 139 :: RETURN
139 DATA 5,1,12,15,3,1,12,20,2,1,12,23,6,2,6,14,6,2,18,22,2,73,100,32,3,7,1,1,1,0,0
140 DATA gh,25,55,ia,60,164
141 RESTORE 142 :: RETURN
142 DATA 3,1,6,10,12,2,1,22,5,2,6,10,6,73,68,32,3,8,25,164,3,1,5
143 DATA hf,73,55,x,52,182
144 RESTORE 145 :: RETURN
145 DATA 4,1,6,10,12,1,12,16,3,2,6,10,6,2,12,20,6,73,68,32,3,9,121,148,80,2,9
146 DATA fg,121,200,k`,25,200,x,3,160
147 RESTORE 148 :: RETURN
148 DATA 4,1,6,12,3,1,6,18,2,1,6,24,3,2,1,22,5,25,164,3,1,7,1,1,1,0,0
149 DATA jk,73,55,x,3,196
150 RESTORE 151 :: RETURN
151 DATA 4,1,6,10,12,1,12,12,8,2,6,22,6,2,12,11,6,73,164,32,3,11,121,76,80,2,11
152 DATA ki,25,200,x,3,72
153 RESTORE 154 :: RETURN
154 DATA 5,1,6,6,3,1,12,6,3,1,12,12,3,1,12,17,2,2,6,21,6,73,156,32,3,12,1,1,1,0,0
155 DATA ij,121,200,x,3,32
156 CALL CLEAR :: CALL SCREEN(2) :: FOR F=1 TO 9 :: CALL COLOR(F,16,2) :: NEXT F
157 GOSUB 114
158 DISPLAY AT(5,8):"LIONEL AND THE" :: DISPLAY AT(8,12):"LADDERS" :: DISPLAY AT(16,7):"INTRIGUE SOFTWARE" :: DISPLAY AT(18,13):"$1984"
159 DISPLAY AT(22,9):"PRESS ANY KEY" :: CALL SPRITE(#5,124,11,82,119)
160 GOSUB 195
161 CALL DELSPRITE(#5)
162 CALL CLEAR :: DISPLAY AT(1,5):"LIONEL AND THE LADDERS" :: DISPLAY AT(6,8):"SELECT  OPTIONS" :: RESTORE 167
163 S=1 :: FOR F=11 TO 15 STEP 2 :: READ S$ :: DISPLAY AT(F,6):S;"  ";S$ :: S=S+1 :: NEXT F
164 DISPLAY AT(24,4):NI$
165 GOSUB 195
166 ON POS("123",CHR$(X1),1)+1 GOTO 165,168,173,178
167 DATA HALL OF FAME,SELECT KEYS,START GAME
168 GOSUB 170
169 GOSUB 195 :: GOTO 161
170 X=1 :: CALL SCREEN(2) :: CALL CLEAR :: DISPLAY AT(1,5):"LIONELS HALL OF FAME" :: FOR F=8 TO 16 STEP 2 :: DISPLAY AT(F,8):X;HF$(X)
171 X=X+1 :: NEXT F
172 DISPLAY AT(22,7):C$;SC :: DISPLAY AT(24,4):NI$ :: RETURN
173 CALL CLEAR :: DISPLAY AT(24,3):NI$
174 DISPLAY AT(1,7):"KEY CONTROL ";QK$ :: QK$="" :: RESTORE 177 :: DISPLAY AT(6,9):"SELECT KEY TO"
175 FOR F=1 TO 10 STEP 2 :: READ K$ :: DISPLAY AT(F+7,9):K$
176 ACCEPT AT(F+7,22)VALIDATE(UALPHA)BEEPSIZE(1):KI$ :: QK$=QK$&KI$ :: NEXT F :: QK$=QK$&"2" :: GOTO 161
177 DATA JUMP,ENTER DOOR,CLIMB LADDER,MOVE LEFT,MOVE RIGHT
178 RETURN
179 DATA 35,FFABD5ABD5ABD5AB,33,DBA55A2418000000,34,FFC3A59999A5C381,36,7E81BDA1A1BD817E,37,81818181FF81818181
180 DATA 60,0F12325252929292925252323212121FF0484C4A42495D4949424A4C4C4848F8
181 DATA 47,FFFFFFFFFFFFFFFF
182 DATA 92,03070207030103070706070303010103C0E0C0C0C080C06060E0E0C080808080
183 DATA 96,0307020703010307060D0D010306070EC0E0C0C0C080C060E0F0F8C0C06060E0
184 DATA 100,03070207030103070F1F1B0706161C0CC0E0C0C0C080C06070B8D8C0C0C060E0
185 DATA 104,03070303030103060607070301010101C0E040E0C080C0E0E060E0C0808080C0
186 DATA 108,0307030303010306070F1F0303060607C0E040E0C080C0E060B0B080C060E070
187 DATA 112,03070303030103060E1D1B0303030607C0E040E0C080C0E0F0F8D8E060683830
188 DATA 116,03071B1B1B191F1F0707030700000000C0E0C0C0C08098F8F8D8C0C0C0C0C0E0
189 DATA 120,030703030301191F1F1B030303030307C0E0D8D8D898F8F8E0C0C0E000000000
190 DATA 124,03070103020103070F1F1B030606060EC0E040C0C080C0E0F0F8D8C0C0C0C0E0
191 DATA 46,0
192 DATA 140,00000000000000000000000000000000001E12121E2040A08040000000000000
193 DATA **D,**D,**D,**C,*D*,C*D,**D,*C*,D*C,*C*,**C,C**
194 DATA 6,6,9,9
195 FOR G=3 TO 15 :: FOR F=1 TO 4 :: CALL COLOR(#F,G) :: CALL KEY(0,X1,L) :: IF L<>0 THEN RETURN
196 NEXT F :: NEXT G :: GOTO 195
197 DATA 030F1F1B3135313B3F1E1B1C1E3F77C0C0F0F0D88CAC8CDCFC78D83878FCEE03,0
198 DATA 0106187789010101010101010101010080C0F0FC22000000000000000040C000,0
199 DATA 000020130F0F1F7F1F1F0F0F13210100008084C8F030B8F8FEF8F0F0C8040000,0
200 DATA 00060301030D1A163C3E3E341B0D0F0300B0E0C0A0F078F87CFCFC3CF8F0F0C0,10
201 FOR F=5000 TO 110 STEP-210 :: CALL SOUND(-160,F,10) :: NEXT F :: RETURN
